package redis

import (
	"context"
	"time"
)

// 返回最近一次 Redis 成功将数据保存到磁盘上的时间，以 UNIX 时间戳格式表示
func (h *Handler) LastSave() (timestamp int64, err error) {
	timestamp, err = h.Client.LastSave(context.Background()).Result()
	go h.Log("DB-LastSave", "", timestamp, err)
	return
}

// 获取 redis 服务的配置参数
func (h *Handler) ConfigGet(parameter string) (config []interface{}, err error) {
	config, err = h.Client.ConfigGet(context.Background(), parameter).Result()
	go h.Log("DB-ConfigGet", parameter, config, err)
	return
}

// 动态地调整 Redis 服务器的配置(configuration)而无须重启
func (h *Handler) ConfigSet(parameter string, value string) (config string, err error) {
	config, err = h.Client.ConfigSet(context.Background(), parameter, value).Result()
	go h.Log("DB-ConfigSet", []interface{}{parameter, value}, config, err)
	return
}

// 用于返回当前数据库的 key 的数量
func (h *Handler) DBSize() (count int64, err error) {
	count, err = h.Client.DBSize(context.Background()).Result()
	go h.Log("DB-DBSize", "", count, err)
	return
}

// 返回当前服务器格式化时间
func (h *Handler) Time() (t time.Time, err error) {
	t, err = h.Client.Time(context.Background()).Result()
	go h.Log("DB-Time", "", t, err)
	return
}

// 以一种易于理解和阅读的格式，返回关于 Redis 服务器的各种信息和统计数值
func (h *Handler) Info(section ...string) (serverInfo string, err error) {
	serverInfo, err = h.Client.Info(context.Background(), section...).Result()
	go h.Log("DB-Info", section, serverInfo, err)
	return
}
